#importation standards des librairies
import pandas as pd
from ipywidgets import interact, interactive, fixed, interact_manual, IntSlider
# Standard plotly imports
import chart_studio.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
# Using plotly + cufflinks in offline mode
import cufflinks as cf
cf.go_offline(connected=False)
init_notebook_mode(connected=False)
from math import floor
valeurs = [1100,1350,1650,1950,2300,3000,5000]
nombres = [639,3087,3382,2509,2261,2740,2141]
df=pd.DataFrame(data=[valeurs,nombres]).T #création d'un dataframe
df.columns=["Salaires","Nombre"] #on nomme les colonnes
Enoncé:
Le tableau ci-dessous donne la répartition des salaires en France par Equivalent Temps Plein en 2019 (Source: INSEE). On prendra comme hypothèse la valeur de 1100€ et de 5000€ pour les deux valeurs extrêmes du tableau lorsque nécessaire.
| Salaire | Nombre d'EQTP (en milliers) |
|---|---|
| Moins de 1200€ | 639 |
| de 1200€ à 1500€ | 3 087 |
| de 1500€ à 1800€ | 3 382 |
| de 1800€ à 2100€ | 2 509 |
| de 2100€ à 2500€ | 2 261 |
| de 2500€ à 3500€ | 2 740 |
| 3500 et + | 2 141 |
1.Tracé de l'histogramme de la série statistique.
df.iplot(x="Salaires",y="Nombre",kind="bar",xTitle="Salaire (€)",yTitle="Nombre d'EQTP (milliers)",title="Histogramme",theme="White")
2.Calculer l'effectif, les fréquences et fréquences cumulées croissantes, en déduire la médiane, les 1er et 3ème quartiles et les 1er et neuvième décile.
effectif = sum(df['Nombre'])
df['Fréquence']=df['Nombre']/effectif*100
df["Fréquence Cumulée"] = df["Fréquence"]
for k in range(1,len(df["Fréquence"])):
df["Fréquence Cumulée"][k]=df["Fréquence Cumulée"][k-1]+df["Fréquence"][k]
print("L'effectif est de: ", effectif)
L'effectif est de: 16759
df
| Salaires | Nombre | Fréquence | Fréquence Cumulée | |
|---|---|---|---|---|
| 0 | 1100 | 639 | 3.812877 | 3.812877 |
| 1 | 1350 | 3087 | 18.419953 | 22.232830 |
| 2 | 1650 | 3382 | 20.180202 | 42.413032 |
| 3 | 1950 | 2509 | 14.971060 | 57.384092 |
| 4 | 2300 | 2261 | 13.491258 | 70.875351 |
| 5 | 3000 | 2740 | 16.349424 | 87.224775 |
| 6 | 5000 | 2141 | 12.775225 | 100.000000 |
3.Calculer la moyenne et l'écart-type.
On utilise les formules du cours. On trouve:
from math import sqrt
rezX=0
rezX2=0
for k in range(len(df["Nombre"])):
rezX+=df["Salaires"][k]*df["Nombre"][k]
rezX2+=df["Salaires"][k]**2*df["Nombre"][k]
rezX/=effectif
rezX2/=effectif
var=rezX2-rezX**2
sigma=sqrt(var)
print("Moyenne :", rezX, "€, Moyenne des carrés :", rezX2, "€², Variance: ", var, "€², Ecart-type:",sigma, "€")
Moyenne : 2355.0629512500745 €, Moyenne des carrés : 6879462.080076377 €², Variance: 1333140.5757256662 €², Ecart-type: 1154.617068869877 €
4.Deux différences notables: tout d'abord les intervalles ne sont pas les mêmes (bien plus précis dans le cas de la courbe de l'INSEE). Ensuite, les valeurs prises comme hypothèse au début pour les intervalles bas et haut.
Enoncé:
Dans cet exercice, chaque question est indépendante. Pour les questions 2 et 3, il est conseillé de faire un arbre en y ajoutant toutes les probabilités.
Correction:
1.La manière de compter est la même que celle du TD 1 des probabilités. Cela peut se voir également en faisant un arbre de choix: pour la première lettre il y a 5 choix, la deuxième 4, la troisième 3, etc. D'où la réponse: 5! = 120
2.On a 49 possibilités pour le premier tirage, 48 pour le deuxième, 47 pour le troisième,.. D'où: $49 \cdot 48 \cdot 47 \cdot 46 \cdot 45 \cdot 44 \sim 10 \ milliards $
3.On remplit l'arbre de probabilité avec ce qu'on connaît, et on en déduit le reste. Il faut d'abord commencer par $p_A(B)$. Cela se fait en notant que l'on connaît $p(B)$ et que $p(B)=p_A(B)*p(A)+p_{\bar{A}}(B)*p(\bar{A})$, d'où: $p_A(B)=\frac{p(B)-p_{\bar{A}}(B)*p(\bar{A})}{p(A)}=0.9$

On peut ensuite calculer $p(A \cup B)$ par la formule: $P( A \cup B) = p(A)+p(B)-p(A \cap B)$. Ce dernier terme peut se calculer par exemple: $P(A \cap B) =p_A(B)*p(A) = 0.36$. On obtient alors pour $P(A \cup B) = 0.4+0.6-0.36 = 0.64$.
Pour $p_{\bar{B}}(A)$, on utilise la définition: $p_{\bar{B}}(A) = \frac{p(\bar{B} \cap A)}{p(\bar{B})} = 0.4*0.1/0.4 = 0.1$
Enoncé:
A un aéroport, des statistiques montrent que que 2.2\% des gens font sonner le portique de sécurité. Un groupe de 80 personnes arrive pour franchir le portique. Soit $X$ la variable aléatoire associé aux nombres de sonnerie du portique.
Correction:
On calcule alors $P(X \leq 4) = \sum_{i=0}^4 P(X=i) = (1-0.022)^{80}+80*0.022*(1-0.022)^{79}+\frac{80*79}{2}*0.022²*(1-0.022)^{78}+\frac{80*79*78}{6}*0.022^3*(1-0.022)^{77}+\frac{80*79*78*77}{24}0.022^4*(1-0.022)^{76}=0.968$
On pouvait également approximer par une loi de poisson, les calculs étant plus simples. Cela donnait, avec $\lambda = 80*0.022$: $P(X \leq 4) = e^{-\lambda}*(\sum_{i=0}^4 \frac{\lambda^i}{i!} = 0.966$
(1-0.022)**80+80*0.022*(1-0.022)**79+80*79/2*0.022**2*(1-0.022)**78+80*79*78/6*0.022**3*(1-0.022)**77+80*79*78*77/24*0.022**4*(1-0.022)**76
0.9681212024139246
from math import exp,factorial
rez=0
l=80*0.022
for i in range(5):
rez+=pow(l,i)/factorial(i)
rez*=exp(-l)
print(rez)
0.9664149235240662
Enoncé:
Un magasin vend des sacs de ciment. D'après une étude statistique, on sait qu'on peut modéliser le nombre de sacs de ciments vendus par une variable aléatoire $X$ suivant une loi normale de moyenne $\mu = 750$ d'écart-type $\sigma=25$.
On donne les valeurs suivantes issues du tableau de la loi normale centrée réduite; soit $Y \sim \mathcal{N}(0,1)$, alors $P(Y \leq 0.6) = 0.7257$, $P(Y \leq 0.8) = 0.7881$, $P(Y \leq 1) = 0.8413$, $P(Y \leq 1.2) = 0.8849$, $P(Y \leq 1.53) = 0.9370$, $P(Y \leq 1.645) = 0.9500$, $P(Y \leq 2) = 0.9772$.
Correction:
on utilise ensuite la courbe et les propriétés de symétrie pour répondre. On voit que l'on a: $P(-1.2 \leq Y \leq 0.8) = P(Y \leq 0.8)-P(Y\leq -1.2)$. Or $P(Y \leq -1.2) = P(Y \geq 1.2) = 1-P(Y \leq 1.2)$. Donc, en réinjectant, on obtient:
$P(-1.2 \leq Y \leq 0.8) = P(Y \leq 0.8)+P(Y \leq 1.2) -1 = 0.673$
Enoncé:
Sachant que la probabilité qu'une personne se fasse un lumbago en ramassant un sac de ciment est de 1\%, que le nombre de sacs achetés par une personne suit une loi de poisson de paramètre $\lambda=3$, et que le temps d'attente chez l'osthéopathe suit une loi uniforme entre 0 et 3h, déterminez la probabilité qu'une personne achetant du ciment attende 1h chez l'osthéopathe.
Correction:
Pour cet exercice, il faut raisonner en probabilités conditionelles: on fixe k le nombre de sacs de ciments achetés; il y a pour cela une probabilité $p(k)= e^{-3}*\frac{3^k}{k!}$.
Sachant que la personne a acheté k sacs de ciments, on peut dire que le nombre de fois où la personne se fait mal au dos suit, au choix:
Soit alors $X \sim \mathcal{B}(k,1/100)$, on cherche $P( X \geq 1) = 1-P(X=0)=1-(\frac{99}{100})^k$
Il faut maintenant faire la somme sur les k pour connaître la probabilité que la personne aille chez l'osthéopathe. On doit donc calculer $\sum_{k=1}^{+\infty} p(k)*(1-(99/100)^k)=\sum_{k=1}^{+\infty} p(k) -e^{-3}*\sum_{k=1}^{+\infty} (3*99/100)^k = 1-p(0)-e^{-3}*(e^{3*99/100}-1)=1-e^{-3}*e^{3*99/100}=1-e^{-1/100}=0.00995$.
Maintenant que l'on connaît la probabilité d'aller chez l'osthéopathe, on peut s'intéresser à la loi uniforme. Notons au passage l'erreur d'énoncé: une personne n'attendra jamais 1h exactement, c'est un intervalle qui doit être donné; par conséquent une réponse immédiate à la question aurait pu être 0. Supposons que l'on cherche la probabilité d'attendre moins de 1h. Cela correspond à une probabilité de $1/3$. On obtient donc pour la probabilité d'aller chez l'osthéopathe et d'attendre moins d'une heure: $0.00995*1/3 = 0.0033= 0.3\%$